package com.ly.cloud.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;


public class TestJDBC {

	public static void main(String[] args)throws Exception {
		System.out.println("测试连接数据库");
		System.out.println("测试结果：" + new TestJDBC().getConnection());
		

	}
	
	/**
	 * 编写一个通用方法，在不修改源程序的情况下，可以获取任何数据库的连接。
	 * 解决方法：把数据库驱动Driver实现类的全类名、url、user、password放入一个配置文件中，
	 * 通过修改配置文件的方式实现和具体的数据库解耦。
	 * 
	 * @return
	 * @throws Exception
	 */
	public Connection getConnection() throws Exception {
		String driverClass = null;
		String jdbcUrl = null;
		String user = null;
		String password = null;

		// 读取类路径下的jdbc.properties文件
		InputStream in = getClass().getClassLoader().getResourceAsStream(
				"generatorConfig.properties");
		Properties properties = new Properties();
		properties.load(in);
		driverClass = properties.getProperty("driver");
		jdbcUrl = properties.getProperty("url");
		user = properties.getProperty("username");
		password = properties.getProperty("password");
		System.out.println("driverClass:"+driverClass);
		System.out.println("jdbcUrl:"+jdbcUrl);
		System.out.println("user:"+user);
		System.out.println("password:"+password);
		

		// 通过反射创建Driver实现类的对象
		Driver driver = (Driver) Class.forName(driverClass).newInstance();
		Properties info = new Properties();
		info.put("user", user);
		info.put("password", password);
		Connection conn = driver.connect(jdbcUrl, info);
		return conn;

	}


}
